package com.init.bootframe.business.service.impl;

import com.init.bootframe.business.dao.IProductDao;
import com.init.bootframe.business.service.IProductService;
import com.init.bootframe.business.vo.ProductVO;
import com.init.bootframe.system.service.impl.MenuServiceImpl;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 产品 service层
 */
@Service
public class ProductServiceImpl implements IProductService {

    private Logger logger = LoggerFactory.getLogger(ProductServiceImpl.class); //日志

    @Autowired
    private IProductDao productDao; //产品dao


    /**
     * 产品列表查询
     * @param productVO
     * @return
     */
    @Override
    public JSONObject findProductList(ProductVO productVO) {
        JSONObject jsonObject = new JSONObject();
        // 查询集合数据总数
        int total = productDao.findProductCount(productVO);
        // 查询集合数据
        List<ProductVO> productList = new ArrayList<ProductVO>();
        if (total > 0) {
            productList = productDao.findProductList(productVO);
        }
        jsonObject.put("rows", productList);
        jsonObject.put("total", total);
        return jsonObject;
    }

    /**
     * 查询产品list列表
     * @param productVO
     * @return
     */
    @Override
    public List<ProductVO> findProduct(ProductVO productVO) {
        return productDao.findProduct(productVO);
    }

    /**
     * 查询产品详情
     * @param productVO
     * @return
     */
    @Override
    public ProductVO findProducts(ProductVO productVO) {
        return productDao.findProducts(productVO);
    }

    /**
     * 添加产品
     * @param productVO
     * @return
     */
    @Override
    public Map<String, Object> addProduct(ProductVO productVO) {
        Map<String, Object> resultMap = new HashMap<String, Object>();
        try {
            productDao.addProduct(productVO);
            resultMap.put("result", Boolean.TRUE);
            resultMap.put("msg", "添加产品信息成功！");
            logger.info("添加产品信息成功！");
        } catch (Exception e) {
            resultMap.put("result", Boolean.FALSE);
            resultMap.put("msg", "添加产品信息失败！");
            logger.info("添加产品信息失败！" + e.getMessage());
            throw new RuntimeException(e.getMessage());
        }
        return resultMap;
    }

    /**
     * 更新产品
     * @param productVO
     * @return
     */
    @Override
    public Map<String, Object> updateProduct(ProductVO productVO) {
        Map<String, Object> resultMap = new HashMap<String, Object>();
        try {
            productDao.updateProduct(productVO);
            resultMap.put("result", Boolean.TRUE);
            resultMap.put("msg", "修改产品信息成功！");
            logger.info("修改产品信息成功！");
        } catch (Exception e) {
            resultMap.put("result", Boolean.FALSE);
            resultMap.put("msg", "修改产品信息失败！");
            logger.info("修改产品信息失败！" + e.getMessage());
        }
        return resultMap;
    }

    /**
     * 删除产品
     * @param productVO
     * @return
     */
    @Override
    public Map<String, Object> deleteProduct(ProductVO productVO) {
        Map<String, Object> resultMap = new HashMap<String, Object>();
        try {
            productDao.deleteProduct(productVO);
            resultMap.put("result", Boolean.TRUE);
            resultMap.put("msg", "删除产品信息成功！");
            logger.info("删除产品信息成功！");
        } catch (Exception e) {
            resultMap.put("result", Boolean.FALSE);
            resultMap.put("msg", "删除产品信息失败！");
            logger.info("删除产品信息失败！" + e.getMessage());
        }
        return resultMap;
    }
}
